#ifndef __BIT_H__
#define __BIT_H__

#include <stdint.h>

// bit 类型
typedef enum Bit_Type{
    BIT_8 = 0U,
    BIT_16,
    BIT_32,
    BIT_INVALID
}Bit_Type_t;

/**
 * @brief 获取指定位的值
 * @param pvValue 存放位的变量的指针 @ref uint8_t @ref uint16_t @ref uint32_t
 * @param u8Type 位类型 @see Bit_Type_t
 * @param bit 位序号
 * @return 位的值
 */
uint8_t 
cbb_get_bit(void* pvValue, uint8_t u8Type, uint8_t bit);

/**
 * @brief 清除指定位的值
 * @param pvValue 存放位的变量的指针 @ref uint8_t @ref uint16_t @ref uint32_t
 * @param u8Type 位类型 @see Bit_Type_t
 * @param bit 位序号
 * @return 1:成功 0:失败
 */
uint8_t 
cbb_clear_bit(void* pvValue, uint8_t u8Type, uint8_t bit);

/**
 * @brief 设置指定位的值
 * @param pvValue 存放位的变量的指针 @ref uint8_t @ref uint16_t @ref uint32_t
 * @param u8Type 位类型 @see Bit_Type_t
 * @param bit 位序号
 * @return 1:成功 0:失败
 */
uint8_t 
cbb_set_bit(void* pvValue, uint8_t u8Type, uint8_t bit);

#endif /* __BIT_H__ */
